package command.usuario;

import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import model.Permissao;
import model.Usuario;

import command.ICommand;

import dao.assinatura.UsuarioDAO;
import dao.fabrica.FabricaDAO;

public class EditarUsuarioCommand implements ICommand {
	
	private String nome;
	private String endereco;
	private String bairro;
	private String cep;
	private String sexo;
	private String telefone;
	private String celular;
	private String profissao;
	private String cpf;
	private String rg;
	private String naturalidade;
	private String estadoCivil;
	private String ativo;
	private String login;
	private String senha;
	private int tipo;
	private int instituicao;
	private String[] permissoes;
	private String usuarioId;
	
	public String execute(HttpServletRequest request) throws ServletException, IOException {
		
		
		try {
			
			login = request.getParameter("inputLogin");
			usuarioId = request.getParameter("u"); 
			if (login != null && usuarioId != null )
			{
				
				//if pesquisa login
			
			 nome = request.getParameter("inputNome");
			 endereco = request.getParameter("inputEndereco");
			 bairro = request.getParameter("inputBairro");
			 cep = request.getParameter("inputCep");
			 sexo = request.getParameter("comboSexo");
			 telefone = request.getParameter("inputTelefone");
			 celular = request.getParameter("inputCelular");
			 profissao = request.getParameter("inputProfissao");
			 cpf = request.getParameter("inputCpf");
			 rg = request.getParameter("inputRg");
			 naturalidade = request.getParameter("inputNaturalidade");
			 estadoCivil = request.getParameter("comboEstadoCivil");
			 ativo = request.getParameter("checkAtivo");
			 senha = request.getParameter("inputSenha");
			 tipo = Integer.parseInt(request.getParameter("comboTipo"));
			 instituicao = Integer.parseInt(request.getParameter("inputInstituicao"));
			 permissoes = request.getParameterValues("permissao");  
			 
			 
			 ArrayList<Permissao> permissaoList = new ArrayList<Permissao>();
			 Usuario usuario = new Usuario(login,senha);
			 if (ativo != null)
				 usuario.setAtivo(true);
			 else
				 usuario.setAtivo(false);
			 usuario.setBairro(bairro);
			 usuario.setCelular(celular);
			 usuario.setCep(cep);
			 usuario.setCPF(cpf);
			 usuario.setEndereco(endereco);
			 usuario.setEstadoCivil(estadoCivil);
			 usuario.setInstituicao(instituicao);
			 usuario.setNaturalidade(naturalidade);
			 usuario.setNome(nome);
			 usuario.setProfissao(profissao);
			 usuario.setRG(rg);
			 usuario.setSexo(sexo);
			 usuario.setTelefone(telefone);
			 usuario.setTipo(tipo);
			 usuario.setId(Integer.parseInt(usuarioId));
			 
			 for (int i = 0; i< permissoes.length;i++)
			 {
				 Permissao p = new Permissao("");
				 p.setId(Integer.parseInt(permissoes[i]));
				 permissaoList.add(p);
			 }
			 
			 usuario.setPermissoes(permissaoList);
			 
			 UsuarioDAO usuarioDAO = FabricaDAO.createUsuario();
		
			 usuarioDAO.updateUsuario(usuario);	
			 
			 
			}else{
				 return "/paginas/editar/usuario.jsp?u="+usuarioId;
				 
			 }
			 
			
			
		} catch (SQLException e) {
			e.printStackTrace();
			return "/paginas/cadastro/cadastro_invalido.jsp";
		}
	return "/paginas/editar/usuario.jsp?resultado=OK";

}
}
